home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / ERRBASE.D < prev    next >
Encoding:
Modula Definition  |  1990-11-25  |  2.3 KB  |  65 lines

  1. DEFINITION MODULE ErrBase;
  2.  
  3. (*
  4.  * Programmgesteuertes Auslösen von Laufzeitfehlern
  5.  *)
  6.  
  7. FROM SYSTEM IMPORT ADDRESS;
  8.  
  9. FROM SysTypes IMPORT ExcDesc;
  10.  
  11. TYPE RtnCond = ( mayContinue,    (* Programm darf fortgeführt werden. *)
  12.                  mustAbort );    (* Programm sollte beendet werden. *)
  13.  
  14.      ErrResp = ( selfCaused,     (* Fehler selbst verursacht. *)
  15.                  callerCaused ); (* Fehler von Aufrufer verursacht. *)
  16.  
  17. PROCEDURE RaiseError (    no    : INTEGER;       (* Fehlernummer *)
  18.                       REF msg   : ARRAY OF CHAR; (* Text, max. 32 Zeichen *)
  19.                           causer: ErrResp;
  20.                           cont  : RtnCond );
  21.   (*
  22.    * Meldet einen Laufzeitfehler.
  23.    *
  24.    * 'msg' darf ein Leerstring sein.
  25.    *)
  26.  
  27. (*
  28.   TRAP Instruktionen in Assembler sind wie folgt kodiert:
  29.     1. Word:
  30.       Trap-Instruktion, normalerweise 'TRAP #6'
  31.     2. Word:
  32.       Bit 15: 0 = Ein Text, mit einem Nullbyte beendet, folgt hiernach.
  33.       Bit 14: Fehlerverursacher, 1=diese Routine, 0=aufrufende Routine
  34.               (funktioniert nur, wenn die Erzeugung des Link-Codes am
  35.               Prozedurbeginn nicht unterdrückt ist).
  36.       Bit 13: 1 = Programm kann hiernach weiter ausgeführt werden.
  37.       Bit 12: immer Eins
  38.       Bit 11-0: Fehlernummer, Bit 11 wirkt als Vorzeichenbit und wird
  39.               zur 16 Bit-Zahl nach Bit 12-15 kopiert.
  40. *)
  41.  
  42. (* ======================================================================== *)
  43. (*                    Systemfunktionen - nicht verwenden!                   *)
  44. (* ======================================================================== *)
  45.  
  46. TYPE ErrHdlProc = PROCEDURE (     (* errNo:   *) INTEGER,
  47.                                   (* msg:     *) ARRAY OF CHAR, (* max. 32 Z.*)
  48.                                   (* causer:  *) ErrResp,
  49.                                   (* cont:    *) RtnCond,
  50.                               VAR (* excData: *) ExcDesc );
  51.  
  52. VAR ErrHdl: ErrHdlProc;
  53.   (*
  54.    * Die Routine erhält bei Aufruf einen Stack von 600 Bytes;
  55.    * Das Installieren und Restaurieren dieses Vektors muß
  56.    * vom Aufrufer durchgeführt werden, vor allem bei Prozeßende!
  57.    *)
  58.  
  59. VAR ExcInstalled: BOOLEAN;
  60.  
  61. PROCEDURE InstallExc; (* Erfolg ist über 'ExcInstalled' zu ermitteln! *)
  62. PROCEDURE RemoveExc;
  63.  
  64. END ErrBase.
  65.